package com.baizhi.mapper;

import com.baizhi.pojo.User;
import org.apache.ibatis.annotations.MapKey;

import java.util.List;
import java.util.Map;

/**
 * 用户持久层接口
 * 主要演示MyBatis接口中返回值类型
 */
public interface UserMapper {

    /**
     * 演示：返回自定义的JavaBean
     * 需求：根据用户ID查询用户信息
     * @param id 用户ID
     * @return 返回满足条件的用户信息
     */
    User getUserById(Integer id);

    /**
     * 演示：返回List集合
     * 功能：获取所有的用户信息
     * @return 返回所有的用户信息
     */
    List<User> getUsers();

    /**
     * 演示：返回Map集合 单条记录
     * 功能：根据id查询用户信息
     * @param id 要查询的用户的id
     * @return 返回满足条件的用户信息，返回类型是一个Map 这个Map中只有 User
     */
    Map<String, Object> getUserById2(Integer id);

    /**
     * 演示：返回Map集合多条记录
     * 功能：返回所有用户信息
     * @return 返回所有用户信息，返回类型是List<Map<String,Object>>
     */
    List<Map<String,Object>> findAllUser();


    /**
     * 演示：返回Map集合 单条记录
     * 功能：根据id查询用户信息
     * @param id 要查询的用户的id
     * @return 返回结果是 Map<id,user>
     * @MapKey这个注解 值应该是 表的主键
     */
    @MapKey("id")
    Map<Integer, User> getUserById3(Integer id);

    /**
     * 演示 返回Map集合，多条记录
     * 功能： 根据用户名模糊查询用户信息
     * @param userName 要查询的用户名
     * @return 返回满足条件的用户集合 Map集合
     */
    @MapKey("id")
    Map<Integer, User> getUserLikeUserName(String userName);

}
